class NotificationFactory::Slack

=begin

  result = NotificationFactory::Slack.template(
    template: 'ticket_update',
    locale: 'en-us',
    objects:  {
      recipient: User.find(2),
      ticket: Ticket.find(1)
    },
  )

returns

  {
    subject: 'some subject',
    body: 'some body',
  }

=end

  def self.template(data)

    if data[:templateInline]
      return NotificationFactory::Renderer.new(data[:objects], data[:locale], data[:templateInline]).render
    end

    template = NotificationFactory.template_read(
      locale: data[:locale] || Setting.get('locale_default') || 'en-us',
      template: data[:template],
      format: 'md',
      type: 'slack',
    )

    message_subject = NotificationFactory::Renderer.new(data[:objects], data[:locale], template[:subject], false).render
    message_body = NotificationFactory::Renderer.new(data[:objects], data[:locale], template[:body], false).render

    if !data[:raw]
      application_template = NotificationFactory.application_template_read(
        format: 'md',
        type: 'slack',
      )
      data[:objects][:message] = message_body
      data[:objects][:standalone] = data[:standalone]
      message_body = NotificationFactory::Renderer.new(data[:objects], data[:locale], application_template, false).render
    end
    {
      subject: message_subject.strip!,
      body: message_body.strip!,
    }
  end

end
